import axios from "axios";
import { Toast } from "vant";
import store from "../store";
import router from "@/router";
// 调用 axios.create() 方法，创建 axios 的实例对象
const instance = axios.create({
  // 请求根路径
  baseURL: "http://geek.itheima.net",
});
// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    Toast.loading({
      message: "加载中...",
      forbidClick: true,
      duration: 0, // 展示时长(ms)，值为 0 时，toast 不会消失
    });
    const tokenStr = store.state.tokenInfo.token;
    if (tokenStr) {
      // 只有 tokenStr 的值存在，才有必要挂载到请求头的 Authorization 属性中
      config.headers.Authorization = "Bearer " + tokenStr;
      console.log(config.headers.Authorization);
    }
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    // 隐藏 loading 效果
    Toast.clear();
    return response;
  },
  function (error) {
    // 对响应错误做点什么
    Toast.clear();
    if (error.response && error.response.status === 401) {
      console.log("token 过期了");
      //删除vue的token和本地的
      store.commit("cleanState");
      //强制进入登录页
      router.replace("/login?pre=" + router.currentRoute.fullPath);
    }
    return Promise.reject(error);
  }
);
export default instance;
